<?php

require_once 'AbstractModel.php';

class EntrepriseBDD extends AbstractModel
{
	// Variable  requêtes
	var $_truncate;
	var $_insert;		
	var $_update_idEntreprise;
	var $_update_nom_entreprise;
	var $_update_raison_sociale;
	var $_update_effectif;
	var $_update_adresse;
	var $_update_complement_adresse;
	var $_update_code_postal;
	var $_update_commune;
	var $_update_interlocuteur1;
	var $_update_fonction_interlocuteur1;
	var $_update_email_interlocuteur1;
	var $_update_tel_fixe_interlocuteur1;
	var $_update_tel_mobile_interlocuteur1;
	var $_update_interlocuteur2;
	var $_update_fonction_interlocuteur2;
	var $_update_email_interlocuteur2;
	var $_update_tel_fixe_interlocuteur2;
	var $_update_tel_mobile_interlocuteur2;
	var $_update_commentaire;
	var $_update_date_inscription;
	var $_update_date_debut_contrat;
	var $_update_date_fin_contrat;
	var $_update_code_abonnement;
	var $_update_subvention_annuelle_salarie;
	var $_update_mode_paiement;
	var $_selectAll;
	var $_selectFournisseurNames;
	var $_delete;
	
	
    public function __construct()
    {
        parent::__construct('ENTREPRISES');
		// Préparation des requêtes
		
		$this->_truncate = $this->_db->prepare('TRUNCATE ENTREPRISES');
		$this->_insert = $this->_db->prepare('INSERT INTO ENTREPRISES (idEntreprise, nom_entreprise, raison_sociale, effectif, adresse, complement_adresse, code_postal, commune, interlocuteur1, fonction_interlocuteur1, email_interlocuteur1, tel_fixe_interlocuteur1, tel_mobile_interlocuteur1, interlocuteur2, fonction_interlocuteur2, email_interlocuteur2, tel_fixe_interlocuteur2, tel_mobile_interlocuteur2, commentaire, date_inscription, date_debut_contrat, date_fin_contrat, code_abonnement, subvention_annuelle_salarie, mode_paiement) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);');

		$this->_update_nom_entreprise = $this->_db->prepare('UPDATE ENTREPRISES SET nom_entreprise = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_raison_sociale = $this->_db->prepare('UPDATE ENTREPRISES SET raison_sociale = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_effectif = $this->_db->prepare('UPDATE ENTREPRISES SET effectif = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_adresse = $this->_db->prepare('UPDATE ENTREPRISES SET adresse = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_complement_adresse = $this->_db->prepare('UPDATE ENTREPRISES SET complement_adresse = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_code_postal = $this->_db->prepare('UPDATE ENTREPRISES SET code_postal = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_commune = $this->_db->prepare('UPDATE ENTREPRISES SET commune = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_interlocuteur1 = $this->_db->prepare('UPDATE ENTREPRISES SET interlocuteur1 = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_fonction_interlocuteur1 = $this->_db->prepare('UPDATE ENTREPRISES SET fonction_interlocuteur1 = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_email_interlocuteur1 = $this->_db->prepare('UPDATE ENTREPRISES SET email_interlocuteur1 = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_tel_fixe_interlocuteur1 = $this->_db->prepare('UPDATE ENTREPRISES SET tel_fixe_interlocuteur1 = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_tel_mobile_interlocuteur1 = $this->_db->prepare('UPDATE ENTREPRISES SET tel_mobile_interlocuteur1 = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_interlocuteur2 = $this->_db->prepare('UPDATE ENTREPRISES SET interlocuteur2 = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_fonction_interlocuteur2 = $this->_db->prepare('UPDATE ENTREPRISES SET fonction_interlocuteur2 = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_email_interlocuteur2 = $this->_db->prepare('UPDATE ENTREPRISES SET email_interlocuteur2 = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_tel_fixe_interlocuteur2 = $this->_db->prepare('UPDATE ENTREPRISES SET tel_fixe_interlocuteur2 = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_tel_mobile_interlocuteur2 = $this->_db->prepare('UPDATE ENTREPRISES SET tel_mobile_interlocuteur2 = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_commentaire = $this->_db->prepare('UPDATE ENTREPRISES SET commentaire = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_date_inscription = $this->_db->prepare('UPDATE ENTREPRISES SET date_inscription = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_date_debut_contrat = $this->_db->prepare('UPDATE ENTREPRISES SET date_debut_contrat = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_date_fin_contrat = $this->_db->prepare('UPDATE ENTREPRISES SET date_fin_contrat = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_code_abonnement = $this->_db->prepare('UPDATE ENTREPRISES SET code_abonnement = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_subvention_annuelle_salarie = $this->_db->prepare('UPDATE ENTREPRISES SET subvention_annuelle_salarie = :value WHERE idEntreprise=:idEntreprise;');
		$this->_update_mode_paiement = $this->_db->prepare('UPDATE ENTREPRISES SET mode_paiement = :value WHERE idEntreprise=:idEntreprise;');

		$this->_selectAll = $this->_db->prepare('SELECT * FROM ENTREPRISES');
		$this->_selectAll->setFetchMode(PDO::FETCH_ASSOC); // Facultatif
		$this->_selectFournisseurNames = $this->_db->prepare('SELECT idEntreprise, nom_entreprise FROM ENTREPRISES');
		$this->_selectFournisseurNames->setFetchMode(PDO::FETCH_ASSOC); // Facultatif
		
		$this->_delete = $this->_db->prepare('DELETE FROM ENTREPRISES WHERE idEntreprise=?;');
    }
	
	public function insert($idEntreprise, $nom_entreprise, $raison_sociale, $effectif, $adresse, $complement_adresse, $code_postal, $commune, $interlocuteur1, $fonction_interlocuteur1, $email_interlocuteur1, $tel_fixe_interlocuteur1, $tel_mobile_interlocuteur1, $interlocuteur2, $fonction_interlocuteur2, $email_interlocuteur2, $tel_fixe_interlocuteur2, $tel_mobile_interlocuteur2, $commentaire, $date_inscription, $date_debut_contrat, $date_fin_contrat, $code_abonnement, $subvention_annuelle_salarie, $mode_paiement)
{
	// On sécurise les entrées
	$idEntreprise = strip_tags($idEntreprise);
	$nom_entreprise = strip_tags($nom_entreprise);
	$raison_sociale = strip_tags($raison_sociale);
	$effectif = strip_tags($effectif);
	$adresse = strip_tags($adresse);
	$complement_adresse = strip_tags($complement_adresse);
	$code_postal = strip_tags($code_postal);
	$commune = strip_tags($commune);
	$interlocuteur1 = strip_tags($interlocuteur1);
	$fonction_interlocuteur1 = strip_tags($fonction_interlocuteur1);
	$email_interlocuteur1 = strip_tags($email_interlocuteur1);
	$tel_fixe_interlocuteur1 = strip_tags($tel_fixe_interlocuteur1);
	$tel_mobile_interlocuteur1 = strip_tags($tel_mobile_interlocuteur1);
	$interlocuteur2 = strip_tags($interlocuteur2);
	$fonction_interlocuteur2 = strip_tags($fonction_interlocuteur2);
	$email_interlocuteur2 = strip_tags($email_interlocuteur2);
	$tel_fixe_interlocuteur2 = strip_tags($tel_fixe_interlocuteur2);
	$tel_mobile_interlocuteur2 = strip_tags($tel_mobile_interlocuteur2);
	$commentaire = strip_tags($commentaire);
	$date_inscription = strip_tags($date_inscription);
	$date_debut_contrat = strip_tags($date_debut_contrat);
	$date_fin_contrat = strip_tags($date_fin_contrat);
	$code_abonnement = strip_tags($code_abonnement);
	$subvention_annuelle_salarie = strip_tags($subvention_annuelle_salarie);
	$mode_paiement = strip_tags($mode_paiement);
	try{
			if ( $this->_insert->execute(array($idEntreprise, $nom_entreprise, $raison_sociale, $effectif, $adresse, $complement_adresse, $code_postal, $commune, $interlocuteur1, $fonction_interlocuteur1, $email_interlocuteur1, $tel_fixe_interlocuteur1, $tel_mobile_interlocuteur1, $interlocuteur2, $fonction_interlocuteur2, $email_interlocuteur2, $tel_fixe_interlocuteur2, $tel_mobile_interlocuteur2, $commentaire, $date_inscription, $date_debut_contrat, $date_fin_contrat, $code_abonnement, $subvention_annuelle_salarie, $mode_paiement)) )
			{
				echo "SUCCESS : La nouvelle entreprise à été créée";
			}else{
				echo "FAILURE : La nouvelle entreprise n'a PAS pu être créée : ";
			}
		}
		catch(Exception $e)
		{
			echo "Échec : " . $e->getMessage();
		}
	}
	
	public function update($idEntreprise, $attribute, $value)
	{
		// Sécurisation des données en entrée
		$idEntreprise = strip_tags($idEntreprise);
		$value = strip_tags($value);
		
		try{
			if ( $attribute == 'nom_entreprise'){
			$this->_update_nom_entreprise->bindParam(':nom_entreprise', $idEntreprise, PDO::PARAM_STR);
			$this->_update_nom_entreprise->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_nom_entreprise->execute();
			}elseif ( $attribute == 'raison_sociale'){
			$this->_update_raison_sociale->bindParam(':raison_sociale', $idEntreprise, PDO::PARAM_STR);
			$this->_update_raison_sociale->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_raison_sociale->execute();
			}elseif ( $attribute == 'effectif'){
			$this->_update_effectif->bindParam(':effectif', $idEntreprise, PDO::PARAM_STR);
			$this->_update_effectif->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_effectif->execute();
			}elseif ( $attribute == 'adresse'){
			$this->_update_adresse->bindParam(':adresse', $idEntreprise, PDO::PARAM_STR);
			$this->_update_adresse->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_adresse->execute();
			}elseif ( $attribute == 'complement_adresse'){
			$this->_update_complement_adresse->bindParam(':complement_adresse', $idEntreprise, PDO::PARAM_STR);
			$this->_update_complement_adresse->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_complement_adresse->execute();
			}elseif ( $attribute == 'code_postal'){
			$this->_update_code_postal->bindParam(':code_postal', $idEntreprise, PDO::PARAM_STR);
			$this->_update_code_postal->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_code_postal->execute();
			}elseif ( $attribute == 'commune'){
			$this->_update_commune->bindParam(':commune', $idEntreprise, PDO::PARAM_STR);
			$this->_update_commune->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_commune->execute();
			}elseif ( $attribute == 'interlocuteur1'){
			$this->_update_interlocuteur1->bindParam(':interlocuteur1', $idEntreprise, PDO::PARAM_STR);
			$this->_update_interlocuteur1->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_interlocuteur1->execute();
			}elseif ( $attribute == 'fonction_interlocuteur1'){
			$this->_update_fonction_interlocuteur1->bindParam(':fonction_interlocuteur1', $idEntreprise, PDO::PARAM_STR);
			$this->_update_fonction_interlocuteur1->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_fonction_interlocuteur1->execute();
			}elseif ( $attribute == 'email_interlocuteur1'){
			$this->_update_email_interlocuteur1->bindParam(':email_interlocuteur1', $idEntreprise, PDO::PARAM_STR);
			$this->_update_email_interlocuteur1->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_email_interlocuteur1->execute();
			}elseif ( $attribute == 'tel_fixe_interlocuteur1'){
			$this->_update_tel_fixe_interlocuteur1->bindParam(':tel_fixe_interlocuteur1', $idEntreprise, PDO::PARAM_STR);
			$this->_update_tel_fixe_interlocuteur1->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_tel_fixe_interlocuteur1->execute();
			}elseif ( $attribute == 'tel_mobile_interlocuteur1'){
			$this->_update_tel_mobile_interlocuteur1->bindParam(':tel_mobile_interlocuteur1', $idEntreprise, PDO::PARAM_STR);
			$this->_update_tel_mobile_interlocuteur1->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_tel_mobile_interlocuteur1->execute();
			}elseif ( $attribute == 'interlocuteur2'){
			$this->_update_interlocuteur2->bindParam(':interlocuteur2', $idEntreprise, PDO::PARAM_STR);
			$this->_update_interlocuteur2->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_interlocuteur2->execute();
			}elseif ( $attribute == 'fonction_interlocuteur2'){
			$this->_update_fonction_interlocuteur2->bindParam(':fonction_interlocuteur2', $idEntreprise, PDO::PARAM_STR);
			$this->_update_fonction_interlocuteur2->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_fonction_interlocuteur2->execute();
			}elseif ( $attribute == 'email_interlocuteur2'){
			$this->_update_email_interlocuteur2->bindParam(':email_interlocuteur2', $idEntreprise, PDO::PARAM_STR);
			$this->_update_email_interlocuteur2->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_email_interlocuteur2->execute();
			}elseif ( $attribute == 'tel_fixe_interlocuteur2'){
			$this->_update_tel_fixe_interlocuteur2->bindParam(':tel_fixe_interlocuteur2', $idEntreprise, PDO::PARAM_STR);
			$this->_update_tel_fixe_interlocuteur2->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_tel_fixe_interlocuteur2->execute();
			}elseif ( $attribute == 'tel_mobile_interlocuteur'){
			$this->_update_tel_mobile_interlocuteur2->bindParam(':tel_mobile_interlocuteur', $idEntreprise, PDO::PARAM_STR);
			$this->_update_tel_mobile_interlocuteur2->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_tel_mobile_interlocuteur2->execute();
			}elseif ( $attribute == 'commentaire'){
			$this->_update_commentaire->bindParam(':commentaire', $idEntreprise, PDO::PARAM_STR);
			$this->_update_commentaire->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_commentaire->execute();
			}elseif ( $attribute == 'date_inscription'){
			$this->_update_date_inscription->bindParam(':date_inscription', $idEntreprise, PDO::PARAM_STR);
			$this->_update_date_inscription->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_date_inscription->execute();
			}elseif ( $attribute == 'date_debut_contrat'){
			$this->_update_date_debut_contrat->bindParam(':date_debut_contrat', $idEntreprise, PDO::PARAM_STR);
			$this->_update_date_debut_contrat->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_date_debut_contrat->execute();
			}elseif ( $attribute == 'date_fin_contrat'){
			$this->_update_date_fin_contrat->bindParam(':date_fin_contrat', $idEntreprise, PDO::PARAM_STR);
			$this->_update_date_fin_contrat->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_date_fin_contrat->execute();
			}elseif ( $attribute == 'code_abonnement'){
			$this->_update_code_abonnement->bindParam(':code_abonnement', $idEntreprise, PDO::PARAM_STR);
			$this->_update_code_abonnement->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_code_abonnement->execute();
			}elseif ( $attribute == 'subvention_annuelle_salarie'){
			$this->_update_subvention_annuelle_salarie->bindParam(':subvention_annuelle_salarie', $idEntreprise, PDO::PARAM_STR);
			$this->_update_subvention_annuelle_salarie->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_subvention_annuelle_salarie->execute();
			}elseif ( $attribute == 'mode_paiement'){
			$this->_update_mode_paiement->bindParam(':mode_paiement', $idEntreprise, PDO::PARAM_STR);
			$this->_update_mode_paiement->bindParam(':value', $value, PDO::PARAM_STR);
			$this->_update_mode_paiement->execute();
			}
			echo "La création d'entreprise à été effectuée avec succés :)";
		}
		catch(Exception $e)
		{
			echo "Échec : " . $e->getMessage();
		}
	}
	
	public  function fetchAllEntreprise()
	{
		$this->_selectAll->execute();
		return $listeFEntreprise = $this->_selectAll->fetchAll();
	}
	
	public  function fetchEntrepriseNames()
	{
		$this->_selectFournisseurNames->execute();
		return $listeEntreprise = $this->_selectFournisseurNames->fetchAll();
	}
	
	public  function delete($idEntreprise)
	{
		$this->_delete->execute(array($idEntreprise));
	}
}